<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    function* go (str) {
      console.log(1);
      let a = yield str;
      console.log(2);
      // 这行代码实现了输入与输出，本次的输出放在了yield的后面，下次的输入放在了yield的前面。
      let b = yield a;
      console.log(3);
      return b;
    }
    // 在这里先去调用一下生成器函数，但是注意，调用它不会立即执行
    // 该函数在这里会返回一个迭代器
    let it = go('a的值'); // 调用的时候进行值的传递
    //  下面需要调用next()函数
    let r1 = it.next(); // 1

    console.log(r1); // {value:'a的值',done:false}
    let r2 = it.next('b的值'); // 2
    console.log(r2); // {value:'b的值',done:false}

    let r4 = it.next('c的值'); // 3
    console.log(r4); // {value:'c的值',done:true}

  </script>
</body>

</html>